home *** CD-ROM | disk | FTP | other *** search
/ 3D Game Programming All in One / 3D Game Programming All in One Disc.iso / 3D2E / RESOURCES / CH23 / soloscreen.cs < prev    next >
Text File  |  2004-02-09  |  2KB  |  74 lines

  1.  
  2.  
  3. //----------------------------------------
  4. function PlaySolo()
  5. {
  6.    %id = SoloMissionList.getSelectedId();
  7.    %mission = getField(SoloMissionList.getRowTextById(%id), 1);
  8.  
  9.    StopMusic(AudioIntroMusicProfile);
  10.    createServer("SinglePlayer", %mission);
  11.    %conn = new GameConnection(ServerConnection);
  12.    RootGroup.add(ServerConnection);
  13.    %conn.setConnectArgs("Reader");
  14.  //  %conn.setConnectArgs($pref::Player::Name);
  15.  //  %conn.setJoinPassword($Client::Password);
  16.    %conn.connectLocal();
  17. }
  18.  
  19.  
  20. //----------------------------------------
  21. function SoloScreen::onWake()
  22. {
  23.    SoloMissionList.clear();
  24.    %i = 0;
  25.    for(%file = findFirstFile($Server::MissionFileSpec);
  26.          %file !$= ""; %file = findNextFile($Server::MissionFileSpec))
  27.       if (strStr(%file, "CVS/") == -1 && strStr(%file, "common/") == -1)
  28.          SoloMissionList.addRow(%i++, getMissionDisplayName(%file) @ "\t" @ %file );
  29.    SoloMissionList.sort(0);
  30.    SoloMissionList.setSelectedRow(0);
  31.    SoloMissionList.scrollVisible(0);
  32. }
  33.  
  34.  
  35. //----------------------------------------
  36. function getMissionDisplayName( %missionFile )
  37. {
  38.    %file = new FileObject();
  39.  
  40.    %MissionInfoObject = "";
  41.  
  42.    if ( %file.openForRead( %missionFile ) ) {
  43.         %inInfoBlock = false;
  44.  
  45.         while ( !%file.isEOF() ) {
  46.             %line = %file.readLine();
  47.             %line = trim( %line );
  48.  
  49.             if( %line $= "new ScriptObject(MissionInfo) {" )
  50.                 %inInfoBlock = true;
  51.             else if( %inInfoBlock && %line $= "};" ) {
  52.                 %inInfoBlock = false;
  53.                 %MissionInfoObject = %MissionInfoObject @ %line;
  54.                 break;
  55.             }
  56.  
  57.             if( %inInfoBlock )
  58.                %MissionInfoObject = %MissionInfoObject @ %line @ " ";
  59.         }
  60.  
  61.         %file.close();
  62.     }
  63.     %MissionInfoObject = "%MissionInfoObject = " @ %MissionInfoObject;
  64.     eval( %MissionInfoObject );
  65.  
  66.    %file.delete();
  67.  
  68.    if( %MissionInfoObject.name !$= "" )
  69.       return %MissionInfoObject.name;
  70.    else
  71.       return fileBase(%missionFile);
  72. }
  73.  
  74.